1. Field of the Invention
The present invention relates to a storage device having a flash memory and related method, and more particularly, to a storage device and related method capable of refreshing data pages of the flash memory based on error correction code.
2. Description of the Related Art
Flash Memory, a non-volatile memory, may keep the previously written stored data upon shutdown. In contrast to other storage media, e.g. hard disks, soft disks, magnetic tapes and so on, the flash memory has advantages of small volume, light weight, vibration-proof, low power consumption, and no mechanical movement delay in data access; therefore, are widely use for as storage media in consumer electronic devices, embedded systems, or portable computers.
There are two kinds of flash memory: one is an NOR flash memory and the other is an NAND flash memory. An NOR flash memory is characteristically of low driving voltage, fast access speed, high stability, and are widely applied in portable electrical devices and communication devices such as Personal Computers (PCs), mobile phones, personal digital assistances (PDAs), and set-top boxes (STBs). An NAND flash memory is specifically designed as data storage media, for example, a Secure Digital (SD) memory card, a Compact Flash (CF) card, a Memory Stick (MS) card. The NAND flash memory contains a plurality of blocks, each block having a plurality of pages and each page dividing into data area and spare area. The data area may have 2048 bytes used for storing data. The spare area may have 64 bytes used for storing error correction code (ECC) as well as other software information, such as wear-leveling or logical-to-physical block-mapping information. NAND flash memory requires ECC to ensure data integrity. ECC can be used in any device that may be susceptible to data errors.
However, the flash memory may fail to change data update-in-place, that is, prior to writing data into a non-blank page, erasing a block including the non-blank page is required. In general, erasing a block takes as much time as 10-20 times greater than writing into a page. If a size of written data is over an assigned block, the filled pages in the assigned block may have to be removed to other blocks, and then erasing the assigned block is performed.
Furthermore, flash memory blocks may fail to be accessed when in excess of one million times of erasures before the block is considered to be worn out. This is because the number of erasure times for a block is close to one million times that charge within the floating gate may be insufficient due to current leakage of realized capacitor, thereby resulting in data loss of the flash memory cell, and even a failure of access to the flash memory. In other words, if a block is erased over a limited times, that block may be unable to be accessed.
Owing to a life-cycle limitation of the flash memory, how to correctly access data before the block is worn out is an important task. A conventional way is to detect a number of written times of all pages, and then to write data into a least-used page. Nevertheless, a most-used page is not essential to be worn out in the next access time, conversely, a less-used is possibly to be worn out in the next access time. In other words, the conventional way to select a page to be written relying on the number of access time is not perfect.